package cn.chen.数据结构.栈;

/**
 * 数组模拟栈
 * */
public class ArrayStack {

    private int maxSize;
    private int top;
    private int[] stack;

    public ArrayStack(int maxSize) {
        this.maxSize = maxSize;
        this.top = -1;
        stack =new int[maxSize];
    }

    // 添加元素
    public void push(int elem){

        if(isFull()){

            System.out.println("栈满，不能存储");
            return;
        }
        stack[++top]=elem;  // 往栈中添加元素
    }
    // 出栈
    public int pop(){

        if(isEmpty()){

            throw new RuntimeException("栈为空，没有元素出栈");
        }
        return stack[top--];    // 返回栈顶元素，并且将top往下移
    }
    // 遍历栈,从栈顶开始显示数据。
    public void showStack(){

        if(isEmpty()){

            System.out.println("栈为空");
            return;
        }
        for(int i=top;i>=0;i--){

            System.out.println(stack[i]);
        }
    }
    // 获取栈顶元素
    public int getTop(){

        if(isEmpty()){

            throw new RuntimeException("栈为空，没有元素出栈");
        }
        return stack[top];
    }

    // 判断栈是否满
    public boolean isFull(){

        return top==maxSize-1;
    }
    // 判断栈是否为空
    public boolean isEmpty(){

        return top==-1;
    }
}
